package cn.iocoder.yudao.module.resource.dal.mysql.session;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.resource.controller.admin.session.vo.SessionPageReqVO;
import cn.iocoder.yudao.module.resource.dal.dataobject.session.SessionDO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 会话 Mapper
 *
 * @author lizhongwen
 */
@Mapper
public interface SessionMapper extends BaseMapperX<SessionDO> {

    default PageResult<SessionDO> selectPage(SessionPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<SessionDO>()
                .eqIfPresent(SessionDO::getRoleId, reqVO.getRoleId())
                .betweenIfPresent(SessionDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(SessionDO::getSessionId));
    }

    default PageResult<SessionDO> selectPageByUserId(Long userId, SessionPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<SessionDO>()
                .eq(SessionDO::getCreator, userId)
                .eqIfPresent(SessionDO::getRoleId, reqVO.getRoleId())
                .betweenIfPresent(SessionDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(SessionDO::getSessionId));
    }

    default void deleteSessionByUserId(Long userId, Long id) {
        delete(new LambdaQueryWrapperX<SessionDO>()
                .eq(SessionDO::getCreator, userId)
                .eq(SessionDO::getSessionId, id));
    }

}